/*
 * @Author: thinkido 4077725@qq.com
 * @Date: 2022-07-07 18:59:49
 * @LastEditors: thinkido 4077725@qq.com
 * @LastEditTime: 2022-07-11 21:03:30
 * @FilePath: \vue3vite-framework\src\router\index.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import { createRouter, createWebHashHistory } from 'vue-router'

import _ from 'lodash'

import store from '@/store';

// 自动导入modules目录下的模块，不用每次都添加路由。
let files =    import.meta.globEager("./modules/**/*.js");

let moduleRoutes = _.flatten(Object.keys(files).map(i => files[i].default))


const router = createRouter({
    history: createWebHashHistory(), // hash模式：createWebHashHistory，history模式：createWebHistory
    routes: [
        ...moduleRoutes,

    ]
})


router.beforeEach((to,from,next) => {
    if (to.matched.some((route) => route.meta.requiresAuth)) {
        const token = util.cookies.get('token');
        if (token && token !== 'undefined') {
            // 个人中心组件会获取用户信息 所以排除个人中心路由
            // if (!store.getters['sys/user/user'].id && to.path !== '/user_center') {
            //     store.dispatch('sys/user/get');
            // }
            next();
        } else {
            // 清空vuex里的用户信息
            // store.commit('sys/user/set', {});
            // 调起登录弹框
            // store.commit('sys/account/changeLoginStatus', true);
        }
    } else {
        next();
    }
});

router.afterEach(
    (to,from)=>{
        console.log( 'router atereach:' , to ,from ,to.query.backPath)
        let title = to.meta.title || '' ;
        // store.commit('setValue',{ title });  // 通用修改数值。
        // store.commit('setTitle', title );  // 修改标题
        let backPath = to.query.backPath || to.meta.backPath ;
        let showBack = to.meta.showBack || !!to.meta.back ;
        if( !showBack && !to.meta.hasOwnProperty('showBack') ) showBack = /\w\//.test( to.path );  // 如果路径中包含有子目录路径就显示返回。
        let showMenu = !showBack ;
        store.commit('setValue',{ title,showBack,backPath,showMenu });
    }
);
export default router